//
//  GYHomeViewController.swift
//  Swift-sina
//
//  Created by gaoyanyun on 16/5/10.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit
//cell的可重用标识
private let CZStatusCellID = "CZStatusCellID"
class GYHomeViewController: GYRootViewController {

    override func viewDidLoad() {
        
        //设置刷新控件
        setupRefreshControl()
        
        //super 会直接调用root的viewDidLoad()
        super.viewDidLoad()
        
       tableView.dataSource = self
        
        //注册cell
        tableView.registerClass(UITableViewCell.self , forCellReuseIdentifier: CZStatusCellID)
        
        visitorView?.setupInfo(message: "关注一些人，回这里看看有什么惊喜")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    

    override func loadData() {
        //默认起始索引
        let defaultIndex = 100
        
        // 1. 判断是否是上拉刷新，如果上拉刷新动画启动，认为是上拉刷新
        let isPullup = pullupView.isAnimating()
        
        //如果是下拉刷新  显示刷新控件
        if !isPullup{
            //就是界面一显示就有菊花 不会触发方法
            refreshControl.beginRefreshing()
        }
    
        //模拟异步加载数据
        dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
            
            //模拟网络延时
            NSThread.sleepForTimeInterval(2.0)
            
            //下拉刷新索引 获取数组的第0条数据
            let pulldownIndex = self.dataList.first ?? defaultIndex
            
            //上啦刷新索引 获取数组的最后一条数据
        let pullupIndex = self.dataList.last ?? 0
            
          
        
        //上拉顺序加载数据  下拉倒序
           var arrayM = [Int]()
            
            if isPullup {
                for i in 0..<10 {
                    arrayM.append(pullupIndex - i - 1)
                }
            } else {
                // 模拟网络一次加载的数据
                for i in (0..<10).reverse() {
                    arrayM.append(i + pulldownIndex + 1)
                }
            }
            
            // 上拉刷新，将数据追加到数组末尾
            if isPullup {
                self.dataList += arrayM
            } else {
                // 下拉刷新要插入到现有的 dataList 的前面
                self.dataList = arrayM + self.dataList
            }
            
        
    //更新UI
     dispatch_async(dispatch_get_main_queue(), { () -> Void in
        // 关闭刷新
     self.refreshControl.endRefreshing()
        
        //停止刷新动画
        self.pullupView.stopAnimating()
        
      //刷新数据
     self.tableView.reloadData()

        })
      }
    }
    
    //设置私有属性
    private lazy var dataList = [Int]()
    
        
}




extension GYHomeViewController {
   
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataList.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(CZStatusCellID, forIndexPath: indexPath)
        
        cell.textLabel?.text = "\(dataList[indexPath.row])"
         //cell.textLabel?.text = "\(indexPath.row)"
        
        return cell
    }
    
    
}
